from utils.common.logger import log


class CategoryMapper:
    """
    关于不同新闻网站新闻分类，到数据库分类的映射Map
    """

    def __init__(self):
        self.category_map = {'国内财经':'财经', '港股':'财经', '大陆':'社会', '证券':'财经', '美股':'财经', '新股':'财经', '保险':'财经', 
                             '期货':'财经', '新闻客户端综合要闻':'其他', '客户端快讯':'其他', '港股':'财经', '银行':'财经', '国际财经':'财经', '债券':'财经',   
                             '港澳': '社会', '体育': '体育', '社会': '社会', '财经': '财经', '文化': '社会', '金融': '财经', '图片': '多媒体',
                             '台湾': '社会', '生活': '生活', '直播': '多媒体', '华人': '社会', '娱乐': '娱乐', '产经': '生活', '新媒体': '多媒体', '时政': '社会', '国际': '社会',
                             '汽车': '汽车', '天气': '生活', '城市': '生活', '买车': '汽车', '彩票': '生活', '手机': '科技', '众测': '科技', '基金': '财经', '医药': '社会',
                             '外汇': '财经', '司法': '社会', '育儿': '生活', '旅游': '旅游', '科技': '科技', '佛学': '教育', '综艺': '娱乐', '公益': '社会', '视频': '多媒体',
                             '国内': '社会', '博客': '多媒体', 'NBA': '体育', '专栏': '多媒体', '历史': '教育', '财务': '财经', 'VR': '多媒体', '理论': '社会',
                             'SHOW': '多媒体', '游戏': '娱乐', '明星': '娱乐', '页游': '娱乐', '电影': '娱乐', '新车': '汽车', '车险': '汽车', '教育': '教育',
                             '理财': '财经', '二手房': '房产', '中超': '体育', '投资': '财经', '股票': '财经', '高考': '教育', '微博': '多媒体', '高尔夫': '体育',
                             '读书': '教育', '女性': '社会', '星座': '娱乐', '家居': '家居', '时尚': '生活', '英超': '体育', '交易': '财经', '房产': '房产', '报价': '房产',
                             '军事': '军事', '手游': '娱乐', '智库': '教育', '美食': '生活', '音乐': '娱乐', '酒业': '生活', '创新': '科技', '5G': '科技', '数码': '数码',
                             '资讯': '财经', '健康': '生活', '论坛': '多媒体', '国学': '教育', '小说': '娱乐', '佛教': '教育', '评论': '多媒体'}
        log.logger.info("CategoryMapper initialized...")

    def unify_category(self, dbData: list):
        '''
        传入json(list)数据，将其category映射到已有种类后返回
        '''

        for idx, row in enumerate(dbData):
            if row['category'] not in self.category_map.keys():
                dbData[idx]["category"] = '其他'
            else:
                dbData[idx]["category"] = self.category_map[row['category']]

        return dbData
